<?php

namespace app\controller;

use app\BaseController;
use app\common\constants\ReturnCodeConstants;
use app\common\util\Response;
use app\common\util\Jwt;
use think\response\Json;

class JwtExample extends BaseController
{

    /**
     * 创建
     * @return Json
     */
    public function create(): Json
    {
        $jwtObj = new Jwt();

        //如需更改过期时间，单位（秒）
        $jwtObj->setExpire(24 * 60 * 60);
        //如需更改密钥
        $jwtObj->setKey('JwtExample');
        //如需改签发人
        $jwtObj->setIssuer('JwtExample');
        //需要保存的数据
        $data = ['uid' => 1];
        //生成token
        $token = $jwtObj->createJwt($data);

        return Response::successJson(['token' => $token]);
    }

    /**
     * 校验
     * @return Json
     */
    public function verify(): Json
    {
        $token = input('get.token');
        $jwtObj = new Jwt();

        //需要跟创建的时候一致
        $jwtObj->setIssuer('JwtExample');
        $jwtObj->setKey('JwtExample');

        //校验token
        $isReturnError = true;
        $res = $jwtObj->verifyJwt(true, $token);
        if (!is_array($res)) {
            $msg = $isReturnError !== true ? 'token校验不通过' : $res;
            return Response::failureJson(ReturnCodeConstants::C_A_TOKEN_VERIFY_FAIL, $msg);
        }

        return Response::successJson($res);
    }
}